#include "widget.h"





#include <QHBoxLayout>
#include <QVBoxLayout>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    //QCalendarWidget:
    QVBoxLayout* mainLayout = new QVBoxLayout(this);
    this->resize(900,500);

    //QCalendarWidget   日历：
    /*
    QCalendarWidget* calender = new QCalendarWidget;
    mainLayout->addWidget(calender);

    //设置当前页：
    calender->setCurrentPage(2023,6);
    //设置网格：
    calender->setGridVisible(true);
    //设置最小日期和最大日期：
    calender->setMinimumDate(QDate(2020,9,1));
    calender->setMaximumDate(QDate(2024,6,1));
    */





    //QListWidget
    /*
    list = new QListWidget;
    // 添加操作：
    list->addItem("china");
    list->addItem("usa");
    list->addItem("uk");
    list->addItem("guizi");
    //还有一种添加操作：
    QListWidgetItem* russb = new QListWidgetItem(QIcon("russ.png"),"russ",list);

    //修改操作：
    QListWidgetItem* china = list->item(0);     //获取list项目
    china->setText("China");                        //修改名字
    china->setIcon(QIcon("china.png"));     //设置图标
    QListWidgetItem* usa = list->item(1);     //获取list项目
    usa->setText("Usa");                                //修改名字
    usa->setIcon(QIcon("usa.png"));             //设置图标
    QListWidgetItem* uk = list->item(2);     //获取list项目
    uk->setText("Uk");                                  //修改名字
    uk->setIcon(QIcon("uk.jpg"));                   //设置图标
    QListWidgetItem* guizi = list->item(3);     //获取list项目
    guizi->setText("Sb");                                  //修改名字
    guizi->setIcon(QIcon("guizi.png"));                   //设置图标



    //删除：
    QPushButton* del = new QPushButton("delete");
    //设置当前选择第几行：
    list->setCurrentRow(3);
    connect(del,SIGNAL(clicked(bool)),this,SLOT(onDelListitem()));
    connect(list,SIGNAL(itemDoubleClicked(QListWidgetItem *)),this,SLOT(onListItemdoubleclicked()));

    mainLayout->addWidget(list);
    mainLayout->addWidget(del);
    */





    //QTableWidget  表格
    /*
    table = new QTableWidget;
    mainLayout->addWidget(table);

    table->setColumnCount(5);           //设置表格的项为5个
    table->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"专业"<<"实习"<<"工作"<<"工资");
    //table->verticalHeader()->setVisible(false);             //隐藏序号
    table->setEditTriggers(QAbstractItemView::NoEditTriggers);               //设置不可以编辑
    table->setSelectionBehavior(QAbstractItemView::SelectRows);           //设置整行选取
    table->setSelectionMode(QAbstractItemView::SingleSelection);            //设置单行选中




    //添加；
    table->insertRow(0);        //添加第0行
    table->setItem(0,0,new QTableWidgetItem("李飞"));
    table->setItem(0,1,new QTableWidgetItem("通信工程"));
    table->setItem(0,2,new QTableWidgetItem("qt"));
    table->setItem(0,3,new QTableWidgetItem("c/c++"));
    table->setItem(0,4,new QTableWidgetItem("5000"));
    table->insertRow(1);        //添加第1行
    table->setItem(1,0,new QTableWidgetItem("李淇"));
    table->setItem(1,1,new QTableWidgetItem("小学三年级"));
    table->setItem(1,2,new QTableWidgetItem("英语"));
    table->setItem(1,3,new QTableWidgetItem("班长"));
    table->setItem(1,4,new QTableWidgetItem("0"));



    //删除：
    QPushButton* deltable = new QPushButton("删除");
     connect(deltable,SIGNAL(clicked(bool)),this,SLOT(onDelTableitem()));
     mainLayout->addWidget(deltable);
    */





    //QTreeWidget       树
    /*
    QTreeWidget* tree = new QTreeWidget;
    mainLayout->addWidget(tree);

    tree->setColumnCount(1);
    tree->setHeaderLabel("中国");         //设置顶头标题

    //添加树项目：
    QTreeWidgetItem* beijing = new QTreeWidgetItem(QStringList()<<"北京");
    QTreeWidgetItem* henan = new QTreeWidgetItem(QStringList()<<"河南");
    QTreeWidgetItem* neimeng = new QTreeWidgetItem(QStringList()<<"内蒙古");
    henan->setIcon(0,QIcon("china.png"));       //添加图标，树不能添加图标

    //添加项目到树顶层中：
    tree->addTopLevelItem(beijing);
    tree->addTopLevelItem(henan);
    tree->addTopLevelItem(neimeng);

    QTreeWidgetItem* hulun = new QTreeWidgetItem(QStringList()<<"呼伦贝尔");
    QTreeWidgetItem* huhe = new QTreeWidgetItem(QStringList()<<"呼和浩特");
    //给顶层项目添加子项目：
    neimeng->addChild(hulun);
    neimeng->addChild(huhe);

    QTreeWidgetItem* hailaer = new QTreeWidgetItem(QStringList()<<"海拉尔");
    QTreeWidgetItem* zhalantun = new QTreeWidgetItem(QStringList()<<"扎兰屯");
    //给次层添加子项目：
    hulun->addChild(hailaer);
    hulun->addChild(zhalantun);

    //tree->expandItem(neimeng);      //展开某一项
    tree->expandAll();                          //展开全部
    */





    //QTabWidget
    /*
    QTabWidget* tab = new QTabWidget;
    mainLayout->addWidget(tab);

    //添加第一个分页：
    QWidget* page1 = new QWidget;
    QLineEdit* edit = new QLineEdit("基本信息");
    QPushButton* button = new QPushButton("按钮");
    QPushButton* button3 = new QPushButton("exit");
    QVBoxLayout* vLayout = new QVBoxLayout;
    vLayout->addWidget(edit);
    QHBoxLayout* anniu = new QHBoxLayout;
    anniu->addWidget(button);
    anniu->addWidget(button3);
    vLayout->addLayout(anniu);
    page1->setLayout(vLayout);
    //添加标题：
    tab->addTab(page1,QIcon("china.png"),"基本信息");

    //添加第二个分页：
    QWidget* page2 = new QWidget;
    QLineEdit* edit2 = new QLineEdit("更多信息");
    QPushButton* button2 = new QPushButton("按钮");
     QPushButton* button4 = new QPushButton("exit");
    QVBoxLayout* vLayout2 = new QVBoxLayout;
    vLayout2->addWidget(edit2);
    QHBoxLayout* anniu2 = new QHBoxLayout;
    anniu2->addWidget(button2);
    anniu2->addWidget(button4);
    vLayout2->addLayout(anniu2);
    page2->setLayout(vLayout2);
    //添加标题：
    tab->addTab(page2,QIcon("usa.png"),"更多信息");
    */





    //QDial         转动控件
    dial = new QDial;
    mainLayout->addWidget(dial);
    dial->setRange(0,100);              //设置转动控件的范围
    dial->setValue(50);                      //设置转动控件的初始值，使转动指向指定的值
    connect(dial,SIGNAL(valueChanged(int)),this,SLOT(onShowDialValue(int)));
    //注意，这个槽函数连接的时候，和其他的有些不一样，可以根据signa来输入变量


    //QSlider      滑动控件
    QSlider* slider = new QSlider(Qt::Horizontal);      //Qt::Horizontal——设置滑动控件为横向滑动控件；Qt::Vertical——设置滑动控件为纵向
    mainLayout->addWidget(slider);
    slider->setRange(0,100);        //设置范围
    slider->value();
    //让slider和dial相互连接，slider改变，dial也改变，反之也是如此：
    connect(slider,SIGNAL(valueChanged(int)),dial,SLOT(setValue(int)));
    connect(dial,SIGNAL(valueChanged(int)),slider,SLOT(setValue(int)));
    //这两行代码需要认真看一下


    //QProgressBar          进度条：
    QProgressBar* probar = new QProgressBar;
    mainLayout->addWidget(probar);
    probar->setRange(0,100);
    probar->setValue(50);
    //probar->setOrientation(Qt::Vertical);           //设置进度条是横向还是纵向；默认是横向
    //probar->setTextVisible(false);                  //设置进度条文本存在与否；
    //那么进度条probar也可以和slider ，dail相互连接，前两个已经连接在一起了，下面连接一个就行了：
    connect(slider,SIGNAL(valueChanged(int)),probar,SLOT(setValue(int)));
}

Widget::~Widget()
{
}

void Widget::onDelListitem()
{
    //直接删除第3项目：
    //list->takeItem(0);

    //获取当前选中的一行：
    int ret = list->currentRow();
    if(ret <0)
        return;
    list->takeItem(ret);

}

void Widget::onListItemdoubleclicked()
{
    qDebug()<<"双击了>"<<list->currentRow();
}

void Widget::onDelTableitem()
{
    int ret =  table->currentRow();
    if(ret <0)
        return;
    qDebug()<<ret;
    table->removeRow(ret);      //移除
}

void Widget::onShowDialValue(int value)
{
    qDebug()<<value;
}

